/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BackEnd;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @author gponti
 */
public class Validation {

    public static boolean validaString(String str) {

        if(str.length()<8 || str.length()>16)
            return false;

        return true;
    }

    public static boolean validaMail(String str) {

        return str.matches("[a-zA-Z0-9_\\.]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)+");
    }

    public static boolean esBiciesto(int ano) {

        return ((ano%4==0) && !(ano%100!=0)) || (ano%1000==0);
    }

    /*
     *  Retorna 0 si esta bien, 1 si es error de formacion, 2 si no es valida la fecha
     *  3 si el cumpleaños es en el futuro
     */
    public static int validaFecha(String str) {

        int[][] fecha=new int[2][12];
        fecha[0][0]=31;
        fecha[0][1]=28;
        fecha[0][2]=31;
        fecha[0][3]=30;
        fecha[0][4]=31;
        fecha[0][5]=30;
        fecha[0][6]=31;
        fecha[0][7]=31;
        fecha[0][8]=30;
        fecha[0][9]=31;
        fecha[0][10]=30;
        fecha[0][11]=31;
        fecha[1][0]=31;
        fecha[1][1]=29;
        fecha[1][2]=31;
        fecha[1][3]=30;
        fecha[1][4]=31;
        fecha[1][5]=30;
        fecha[1][6]=31;
        fecha[1][7]=31;
        fecha[1][8]=30;
        fecha[1][9]=31;
        fecha[1][10]=30;
        fecha[1][11]=31;

        if(str.matches("[0-2][0-9]{3}\\-[0-1][0-9]\\-[0-3][0-9]")) {

            int year=Integer.parseInt(str.substring(0, 4));
            if(year<0)
                return 2;
            System.out.println(year);
            int flag=(esBiciesto(year))?1:0;
            int month=Integer.parseInt(str.substring(5, 7));
            System.out.println(month);
            if(month<1 || month>12)
                return 2;
            int day=Integer.parseInt(str.substring(8));
            System.out.println(day);
            if(fecha[flag][month-1]<day || day<0)
                return 2;

            Calendar calendar=Calendar.getInstance();
            calendar.set(year, month, day);

            Calendar today=Calendar.getInstance();
            if(today.compareTo(calendar)<0)
                return 3;

            return 0;
        }
        return 1;
    }
}
